package chapter10.ClodeBlock;
//当创建一个带有继承关系的对象时，它的其中各元素执行顺序如下
//1.父类的静态代码块，和静态属性（优先级一样，按顺序执行）
//2.子类的静态代码块，和静态属性（优先级一样，按顺序执行）
//3.父类的普通代码块，和普通属性（优先级一样，按顺序执行）
//4.父类的构造方法
//5.子类的普通代码块，和普通属性(优先级一样，按顺序执行）
//6.子类的构造方法
//7.静态代码块只能调用静态成员，非静态的代码块都可以调用（静态和非静态）
public class CodeBlockDetail04 {
    public static void main(String[] args) {
        new abcd();
    }
}
class ABC{
    static {
        System.out.println("父类的静态代码块");
    }
    {
        System.out.println("父类的普通代码块");
    }

    public ABC() {
        System.out.println("父类的构造方法");
    }
}
//和父类不能重名(不区分大小写)
class abcd extends ABC{
    static {
        System.out.println("子类的静态代码块");
    }
    {
        System.out.println("子类的普通代码块");
    }

    public abcd() {
        //隐藏了
        //super()
        //普通代码块。和普通属性初始化
        System.out.println("子类的构造器");
    }
}